body {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    overflow: hidden;
    background-color: #111;
}

.scene {
    width: 100vw;
    height: 100vh;
    perspective: 1500px;
    perspective-origin: 50% 60%;
}

.world {
    width: 100%;
    height: 100%;
    position: relative;
    transform-style: preserve-3d;
    transform: translateY(10%) rotateX(-8deg);
}

.photo-wall,
.photo-wall-reflection {
    width: 100%;
    height: 100%;
    position: absolute;
    transform-style: preserve-3d;
    animation: sway 90s ease-in-out infinite alternate;
}

@keyframes sway {
    from {
        transform: rotateY(40deg);
    }

    to {
        transform: rotateY(-40deg);
    }
}

.photo-wall-reflection {
    top: 100%;
    transform: scaleY(-1);
    mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.2) 50%, transparent 80%);
    -webkit-mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.2) 50%, transparent 80%);
}

.screen {
    position: absolute;
    top: 50%;
    left: 50%;
    background-color: #000;
    border: 2px solid #333;
    overflow: hidden;
    backface-visibility: hidden;
}

.screen img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0.9;
}

.person {
    position: absolute;
    bottom: -5%;
    left: 50%;
    height: 90vh;
    width: 45vh;
    z-index: 10;
    transform: translateX(-50%) translateZ(200px);
}

.person img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: bottom;
    filter: drop-shadow(0px 40px 30px rgba(0, 0, 0, 0.5));
}